/*
    1、保留着JS的语法定义方式
    2、ts 限制了变量的取值类型
        + 在定义变量时如果没有描述变量类型，
          ts会将变量的第一个取值类型限制为变量类型
        + 在定义变量时，可以直接指定类型，
          类型一旦限制完成，该变量只能区对于类型数据
*/
var title = "tom";
var title = "aaa";
title = "cccc";
// title = 123;
var age = 23;
age = 33;
// let age = 44;
// age = "字符串";
var SEX = "男";
// const SEX = "女";
// SEX = "女";
var arg1 = "123";
// arg1 = true;
arg1 = null;
/*
    number
    string
    boolean
    any  TS语法扩展的类型，描述变量可取任意类型数据
         TS 对 JS 语法变量的一种特性保留
    null TS 对于 JS 语法中 typeof null 返回 object 的 bug修复
          null 类型的取值 只有 null
          null 值在TS 中可以为任意 类型变量赋值
    undefined TS 对 JS undefined 类型的保留
          常用于描述方法返回结果状态

    定长数组定义==元组
        变量修饰符 变量名:[类型,类型,类型] = 变量取值;
    数据类型数组定义
        变量修饰符 变量名:类型[] = 变量取值;
        变量修饰符 变量名:Array<类型> = 变量取值; => 泛型定义
    枚举类型
        固定取值范围数据
        被没有修饰的变量，只能在上述范围了进行值的定义
*/
var arg2 = "dasd";
arg2 = 123;
arg2 = true;
var arg3 = null;
// arg3 = 123;
var arg4 = undefined;
// arg4 = 123;
// var arg5:string = undefined;
// var arr1:[] = [1];
var arr2 = ["123", 123, false];
var arr3 = [1, 2, 3, 4, 5, 6];
var arr4 = ["a", "b"];
var arr5 = [1, "aa", true];
var arr6 = [1, "aa", false];
var arr7 = [1, "aa", true];
var arr8 = [["a"], ["b"]];
// 1、定义枚举类型数据范围
//  enum 枚举类型名称 { 定义枚举取值 }
// 在项目开发之处，为整个项目统一定义 相关变量的取值范围
var season;
(function (season) {
    season[season["spring"] = 0] = "spring";
    season[season["summer"] = 1] = "summer";
    season[season["autumn"] = 2] = "autumn";
    season[season["winter"] = 3] = "winter";
})(season || (season = {}));
;
var enum1 = season.spring;
var seasonA;
(function (seasonA) {
    seasonA["spring"] = "\u6625";
    seasonA["summer"] = "\u590F";
    seasonA["autumn"] = "\u79CB";
    seasonA["winter"] = "\u51AC";
})(seasonA || (seasonA = {}));
;
var enum2 = seasonA.spring;
enum2 = seasonA.autumn;
// 程序员A   0  1  2
// 程序员B   m  f  u
// 程序员C   男 女 未知   
var msg1 = "aa";
var num1 = 123;
var message = null;
// 在一些特定阶段 告知 编辑器 当前数据类型为何种类型
// ==> 断言 : 在现阶段当前变量以何种类型进行处理
message = "字符串";
message.length;
message = 123;
message.toFixed(2);
